package util

import (
	"net"
	"time"
)

// 得到本机IP，可以过滤其他IP地址,是请求的IP
func GetLocalIP() (ip string, err error) {
	addrs, err := net.InterfaceAddrs()
	if err != nil {
		return
	}
	for _, addr := range addrs {
		ipAddr, ok := addr.(*net.IPNet)
		if !ok {
			continue
		}

		if ipAddr.IP.IsLoopback() {
			continue
		}
		if !ipAddr.IP.IsGlobalUnicast() {
			continue
		}
		return ipAddr.IP.String(), nil
	}
	return
}

// 得到当前时间
// 返回格式2006-01-02 15:04:05
func GetNow() string {
	return time.Now().Format("2006-01-02 15:04:05")
}

// 根据时间格式返回,layout 时间格式,2006-01-02 15:04:05
func GetNowDateFormat(layout string) string {
	if layout == "" {
		layout = "2006-01-02 15:04:05"
	}
	return time.Now().Format(layout)
}

// 把时间戳(秒)转换为日期格式
// unix 时间戳(秒),layout 时间格式,2006-01-02 15:04:05
func GetNowTimeUnix(unix int64, layout string) string {
	if layout == "" {
		layout = "2006-01-02 15:04:05"
	}
	formatTime := time.Unix(unix, 0).UTC()
	return formatTime.Format(layout)
}

// 把时间日期转换为时间戳(秒)
func GetNowTimeFormatUnix(date, layout string) int64 {
	if layout == "" {
		layout = "2006-01-02 15:04:05"
	}
	t, err := time.ParseInLocation(layout, date, time.Local)
	if err != nil {
		return 0
	}
	return t.Unix()
}

// 把时间日期转换为时间差(秒)
// date 2006-01-02 15:04:05
func GetNowFormatToUnix(date string) int64 {
	layout := "2006-01-02 15:04:05"
	t, err := time.Parse(layout, date)
	if err != nil {
		return 0
	}
	return t.Unix()
}
